<?php
//后台登录控制器
namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class LoginController extends Controller
{
    //构造方法
    public function __construct()
    {
        //中间件传递参数
//        $this->middleware(['ckadmin:login']);
    }

    //登录显示
    public function index(){
        return view('admin.login.login'); //指定试图模板
    }

    public function login(Request $request){
        //表单验证
        $validatedData = $request->validate([
            'username' => 'required',
            'password' => 'required',
        ]);
        $bool = auth()->attempt($validatedData);
        if($bool){
            //判断 当前用户是否是 超级管理员  username 等于admin
            if(config('rbac.suepr') == $validatedData['username']){
                session(['admin.auth'=>true]);
                //权限是true
            }else{
                //获取用户信息
                $userModel = auth()->user();
                //根据用户和角色表的关联模型 找到角色模型 信息
                $roleModel = $userModel->role;
                //根据角色模型 找对应的权限数据
                $nodeData = $roleModel->nodes()->pluck('route_name','id')->toArray();
                //最后将获取的权限信息 存到session
                session(['admin.auth'=>$nodeData]);
            }
            return redirect(route("admin.index"));
            //返回当前登录用户模型对象储存在session  存在文件  优化到内存
//            $model = auth()->user();
//            dump($model->toArray());
//            return redirect(route("admin.index"));
        }
        // 验证失败  witherrors  将错误信息添加到验证错误中 特殊session
        // 闪存  从设置之后只能在第一个 http中获取到数据
        return redirect(route("admin.login"))->withErrors(["error"=>"登录失败，账号密码不正确！"]);
    }

    //退出
    public function logout(){
        //判断是否 用户已经登录
        auth()->logout();
        return redirect(route('admin.login'))->with('success','退出成功!');
    }
}
